// 麻省理工学院许可证
//
// 版权所有 (c) 2021-2023 zuohuaijun，大名科技（天津）有限公司  联系电话/微信：18020030720  QQ：515096995
//
// 特此免费授予获得本软件的任何人以处理本软件的权利，但须遵守以下条件：在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
//
// 软件按“原样”提供，不提供任何形式的明示或暗示的保证，包括但不限于对适销性、适用性和非侵权的保证。
// 在任何情况下，作者或版权持有人均不对任何索赔、损害或其他责任负责，无论是因合同、侵权或其他方式引起的，与软件或其使用或其他交易有关。

using Admin.NET.Core.Service;

namespace Admin.NET.Application.Service;

/// <summary>
/// 系统菜单服务
/// </summary>
[ApiDescriptionSettings(Order = 450)]
public class SysMenuExService : IDynamicApiController, ITransient
{

    private readonly SysMenuService _sysMenuService;

    public SysMenuExService(SysMenuService sysMenuService)
    {
        _sysMenuService = sysMenuService;
    }

    /// <summary>
    /// 获取登录菜单树适配Layui
    /// </summary>
    /// <returns></returns>
    [DisplayName("获取登录菜单树适配Layui")]
    public async Task<List<LayUIMenuOutput>> GetLoginMenuLayUITree()
    {
        var lst = await _sysMenuService.GetLoginMenuTree();
        return lst.Adapt<List<LayUIMenuOutput>>();
    }

    /// <summary>
    /// 菜单树适配Layui
    /// </summary>
    /// <returns></returns>
    [DisplayName("菜单树适配Layui")]
    public async Task<List<LayUIMenuOutput>> GetMenuLayUITree([FromQuery] MenuInput input)
    {
        var lst = await _sysMenuService.GetList(input);
        return lst.Adapt<List<LayUIMenuOutput>>();
    }

    /// <summary>
    /// 获取菜单列表
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("获取菜单列表")]
    public async Task<List<MenuExOutput>> GetList([FromQuery] MenuInput input)
    {
        var lst = await _sysMenuService.GetList(input);
        return lst.Adapt<List<MenuExOutput>>();
    }

    /// <summary>
    /// 获取下拉树菜单
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("获取下拉树菜单")]
    public async Task<List<TreeSelectDto>> GetTreeSelect([FromQuery] MenuInput input)
    {
        var lst = await _sysMenuService.GetList(input);
        return lst.Adapt<List<TreeSelectDto>>();
    }
}